import { ConnectedSocket, MessageBody, SubscribeMessage, WebSocketGateway, WsResponse } from "@nestjs/websockets";
import { Socket } from "dgram";
import { mockWsData } from "./mock";

// * @WebSocketGateway(8888, options) nestjs默认是3000,第二个是配置项，例如跨域配置cors,以及namespace命名空间等等
// 注意 WsAdapter适配器不支持 namespace命名空间 , 需要使用 IoAdapter适配器
// ! IoAdapter适配器 我还不会 官方文档写得云里雾里的
// @WebSocketGateway(8888, { namespace: "events", path: "events", cors: { origin: "*" } })
@WebSocketGateway({ path: "events" })
export class EventGateway {
  static event = "events";
  // * @SubscribeMessage里面的字符串代表类型，就是send event的值 如客户端发送:{ "event": "events", "data": 123 }
  @SubscribeMessage(EventGateway.event)
  // handleEvent(@MessageBody() data: string, @ConnectedSocket() client: Socket): WsResponse<unknown> {
  // // 处理消息 并响应 订阅模式  
  //   return {
  //     event: EventGateway.event,
  //     data: {
  //       msg: `ws收到,ws收到,值为${data}`,
  //     },
  //   };
  // }
  handleEvent(@MessageBody() data: string, @ConnectedSocket() client: Socket) {
    // 连接成功后 收到消息 主动进行推送
    mockWsData(value => {
      client.send(value);
    });
  }
}
